package cl.tinet.tarea6;

import java.util.List;

import javax.annotation.PostConstruct;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import cl.tinet.tarea6.dao.UsuarioDao;
import cl.tinet.tarea6.dao.UsuarioDaoImpl;
import cl.tinet.tarea6.exception.usuarioExisteExcepcion;
import cl.tinet.tarea6.model.Usuario;

/**
 * 
 * @author Carlos Duque
 * 
 */

@Stateless
public class UsuarioBeanImpl implements UsuarioBean {

	@PersistenceContext(unitName = "MySqlDS")
	EntityManager em;

	UsuarioDao dao;

	@PostConstruct
	public void init() {
		if (dao == null) {
			dao = new UsuarioDaoImpl(em);
		}
	}

	/**
	 * Metodo crear usuario que viene de DAO
	 */
	public void crear(Usuario usuario) throws usuarioExisteExcepcion {

		// Valida existencia
		Usuario local = buscarUsername(usuario.getUsername());
		if (local != null) {
			throw new usuarioExisteExcepcion(usuarioExisteExcepcion.USUARIO_EXISTE);
		} else {
			dao.crear(usuario);
		}
	}

	/**
	 * Metodo eliminaar usuario que viene de DAO
	 */
	public void eliminar(String username) {

		Usuario local = buscarUsername(username);

		dao.eliminar(local);
	}

	/**
	 * Metodo buscar por username
	 */
	public Usuario buscarUsername(String usuario) {

		Usuario resultado = dao.buscarUsername(usuario);

		return resultado;
	}

	public List<Usuario> lista() {

		List<Usuario> resultado = dao.lista();

		return resultado;

	}

}
